package com.example.websockettest.webSocket.MyTool;

import com.alibaba.fastjson.JSONObject;
import com.example.websockettest.webSocket.entity.Gpt;
import com.example.websockettest.webSocket.utils.通用操作数据库;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import static com.example.websockettest.webSocket.WebSocketServer.sendToUser_Msg;

public class 自由对话 extends 通用操作数据库 {
    //存用户的话
    public static void saveUserMsg(JSONObject jsonObject,long uid){
        String action=jsonObject.getString("action");
        if(action==null){
            return;
        }
        if(action.equals("模拟面试对话")){
            Gpt gpt=new Gpt();
            if(jsonObject.getString("userTxt").equals("")){
                return;
            }
            gpt.setUser(jsonObject.getString("userTxt"));
            gpt.setUid(uid);
            gpt.setGptcont("无");
            gptMapper.insertGpt(gpt);
        }
    }
    //存gpt的话
    public static void saveGptrMsg(String msg,long uid){
            Gpt gpt=new Gpt();
            gpt.setGptcont(msg);
            gpt.setUser("无");
            gpt.setUid(uid);
            gptMapper.insertGpt(gpt);
    }

    //从数据库拉取MyRolelist
    /**
     * 按照第一句为现在你扮演一个英语口语面试官，对我进行面试对话,现在开始
     * //我的对话的模式格式为，“我的第i句话是“ ”;
     * //gpt的对话格式为，你的第i句话是什么“ ”;
     * */
    public static String get历史消息(Long uid) throws IOException {
        String first=控制gpt指令集.初始话场景模拟;
        int i=1,j=1;
        String me="me:";
        String gpt="you:";
        String prompt=first;
        List<Gpt> gptList=gptMapper.selectGptListByUid(uid);
        for(Gpt e:gptList){
            if(e.getUser().equals("无")){//也就是gpt的对话
            prompt+=gpt+e.getGptcont();
            }else {
            prompt+=me+e.getUser();
            }
        }
        if(gptList.size()>=6){//对话结束并总结
            String overTheSession=控制gpt指令集.总结;
            prompt+=overTheSession;
            //清除历史对话内容
            gptMapper.deleteGptByUid(uid);
            sendToUser_Msg("msg", "本次模拟面试结束，如需再次开始，请点击模拟训练，下面是gpt对此次对话的评价，请稍等", uid);
        }
        return prompt+"Now it's your turn";
    }
    public static ArrayList<MyRole> getsaveList(Long uid){
        List<Gpt> gptList=gptMapper.selectGptListByUid(uid);
        if(gptList.size()>3){//最多留三条用户的信息
            for(int i=0;i<gptList.size()-3;i++){
                gptList.remove(gptList.get(i));
                i--;
            }
            gptMapper.deleteGptByUid(uid);
            for(Gpt e:gptList){
                gptMapper.insertGpt(e);
            }
        }
        ArrayList<MyRole> myRoleArrayList=new ArrayList<>();
        for(Gpt e:gptList){
            if(e.getUser().equals("无")){
                myRoleArrayList.add(new MyRole("assistant",e.getGptcont()));
            }else {
                myRoleArrayList.add(new MyRole("user",e.getUser()));
            }
        }
        System.out.println(JSONObject.toJSONString(myRoleArrayList)+"list内容");
        return myRoleArrayList;
    }

}
